package response

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

// Response 响应结构体
type Response struct {
	Code int    `json:"code"` // 状态码
	Data any    `json:"data"` // 返回数据
	Msg  string `json:"msg"`  // 提示信息
	Flag bool   `json:"flag"` // 是否成功
}

// Result 返回结果
func Result(c *gin.Context, code int, data any, msg string, flag bool) {
	c.JSON(http.StatusOK, Response{
		code, data, msg, flag,
	})
}

// Success 返回成功
func Success(c *gin.Context) {
	Result(c, SUCCESS, nil, GetMsg(SUCCESS), true)
}

// SuccessData 携带数据返回成功
func SuccessData(c *gin.Context, data any) {
	Result(c, SUCCESS, data, GetMsg(SUCCESS), true)
}

// Fail 返回错误提示
func Fail(c *gin.Context, msg string) {
	Result(c, FAIL, nil, msg, false)
}

// FailCode 根据状态码返回错误提示
func FailCode(c *gin.Context, code int) {
	Result(c, code, nil, GetMsg(code), false)
}
